---
title: "Deploy as docker image"
---

Digger has 2 main components: the CLI that runs within your CI and an orchestrator backend. The orchestrator enables parallelism, policies and other features that require centralisation.

This guide describes self-hosting the orchestrator backend using Docker. Self-hosting may come handy when using the cloud-based version of it is not an option (for example due to compliance requirements). More guides (binary, EC2, etc) are coming soon.

# Prerequisites
- docker and docker-compose installed on your machine

Using Docker compose is the easiest way to try digger quickly on a machine.

# Download the docker image:

You can fetch the docker image using the instructions on [github packages](https://github.com/diggerhq/digger/pkgs/container/digger_backend):

```
docker pull registry.digger.dev/diggerhq/digger_backend:latest
```

# Set initial environment variables

```
GITHUB_ORG=your_github_org
HOSTNAME=your_public_digger_hostname
BEARER_AUTH_TOKEN=$(openssl rand -base64 12)
DATABASE_URL=postgres://postgres:PASSWORD@POSTGRESHOSTNAME:5432/postgres
HTTP_BASIC_AUTH=1
HTTP_BASIC_AUTH_USERNAME=myorg
HTTP_BASIC_AUTH_PASSWORD=$(openssl rand -base64 12)
ALLOW_DIRTY=false # set to true if the database has already a schema configured
```

# Start the service

```
docker run --env-file .env -p 3000:3000 registry.digger.dev/diggerhq/digger_backend:latest
```
You should now see initial database migrations and tables being created. Go to your_digger_hostname:3000/projects; you should see the dashboard. The setup is not complete yet!

# Create GitHub app

Go to your_digger_hostname:3000/github/setup and click the Setup button. Follow the instructions on GitHub to install the app to the repositories in your organisation.

After the setup is done, GitHub should redirect you to the summary page at your_digger_hostname:3000/github/exchange-code

Copy the values into the following environment variables and restart the service.

```
GITHUB_APP_ID=
GITHUB_APP_CLIENT_ID=
GITHUB_APP_CLIENT_SECRET=
GITHUB_APP_PRIVATE_KEY_BASE64=
GITHUB_WEBHOOK_SECRET=
```

# Install the GitHub app

On the exchange-code page (see above) click the installation link at the top and select the repositories.

From here on it's the same steps as in the [Quickstart](/ce/getting-started/github-actions-+-aws):
- Create digger.yml
- Create workflow file
- Create secrets
- Create a PR to verify that Digger works
